package net.schastny.shopmanager.service;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
 
import net.schastny.shopmanager.dao.ContactDAO;
import net.schastny.shopmanager.domain.Contact;

/*Service - Мы используем данную аннотацию, чтобы объявить, что этот класс представляет сервис – 
 * компонент сервис-слоя. Сервис является подтипом класса @Component. Использование 
 * данной аннотации позволит искать бины-сервисы автоматически (смотрите далее в 
 * root-context.xml).
 */

@Service
public class ContactServiceImpl implements ContactService {

	@Autowired
    private ContactDAO contactDAO;

	/*
	 * Transactional - Перед исполнением метода помеченного данной аннотацией начинается транзакция, 
	 * после выполнения метода транзакция коммитится, 
	 * при выбрасывании RuntimeException откатывается.
	 */
	@Transactional
	public void addContact(Contact contact) {
		// TODO Auto-generated method stub
		contactDAO.addContact(contact);
	}

	@Transactional
	public List<Contact> listContact() {
		// TODO Auto-generated method stub
		return contactDAO.listContact();
	}
	
	@Transactional
	public void removeContact(Integer id) {
		// TODO Auto-generated method stub
		contactDAO.removeContact(id);
	}

	@Transactional
	public Contact getContact(Integer id) {
		// TODO Auto-generated method stub
		 System.out.println("Service getContact" + id);
		return contactDAO.getContact(id);
	}
	@Transactional
	public void editContact(Contact contact) {
		// TODO Auto-generated method stub
		contactDAO.editContact(contact);
	}

	
	
}
